<?php
/**
 * 验证码步骤：
 * 第一步：先随机产生四个验证码；
 * @parm $lenstr表示验证码的长度；
 * 第二步：绘图并显示在画布上；
 */
    //创建一个头，说明是一张图片；
    session_start();
    header("Content-type:image/png");
    $type = 2;
    $lenstr = 4;
    $code = getCode($type,$lenstr);
    $_SESSION['code'] = $code;
    //创建一个画布；
    $im = imagecreatetruecolor(80,35);
    $bg = imagecolorallocate($im,230,230,230);

    //开始绘图：
    imagefill($im,0,0,$bg);
    //画四条线
    for($i=0;$i<4;$i++){
        $rgb = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
        imageline($im,rand(10,36),rand(10,34),rand(10,78),rand(10,34),$rgb);
    }
    //画像素点；
    for($i=0;$i<150;$i++) {
        $rgb = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255));
        imagesetpixel($im, rand(4, 78), rand(4, 34), $rgb);
    }
    //把验证码放到画布上；
    for($i=0;$i<$lenstr;$i++){
        $rgb = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
        imagettftext($im,20,rand(10,20),(15*$i+10),25,$rgb,"msyh.ttf",$code[$i]);
    }

    //输出图像：
    imagepng($im);

    //销毁图像：
    imagedestroy($im);

    //引用函数：
    function getCode($type=1,$lenstr=4)
    {
        $str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        if($type==1){
            $len = 9;//下标值；
        }else if($type==2){
            $len = 35;
        }else if($type==3){
            $len = strlen($str)-1;
        }
        $code="";
        for($i=0;$i<$lenstr;$i++){
            for(;;){
                $s = $str[rand(0,$len)];//随机产生一个字符赋值给$s;
                if(substr_count($code,$s)==0){
                    $code.=$s;
                    break;
                }
            }
        }
        return $code;
    }

